package com.yic.module.wms.controller.admin.erpproducein.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalDate;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;

/**
 * erp生产入库 Base VO，提供给添加、修改、详细的子 VO 使用
 * 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
 */
@Data
public class ErpProduceInBaseVO {

    @Schema(description = "工厂", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "工厂不能为空")
    private Long factoryId;

    @Schema(description = "生产车间", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "生产车间不能为空")
    private Long workshopId;

    @Schema(description = "单号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "单号不能为空")
    private String code;

    @Schema(description = "单据编号", requiredMode = Schema.RequiredMode.REQUIRED)
    private String erpDocNo;

    @Schema(description = "单据类型", requiredMode = Schema.RequiredMode.REQUIRED)
    private String erpDocCode;

    @Schema(description = "单据日期", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "单据日期不能为空")
    private LocalDateTime erpDocDate;

    @Schema(description = "工作中心", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "工作中心不能为空")
    private String erpCenterCode;

    @Schema(description = "仓库", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "仓库不能为空")
    private String erpWarehouseCode;

    @Schema(description = "库位")
    private String erpBinCode;

    @Schema(description = "生产计划", requiredMode = Schema.RequiredMode.REQUIRED, example = "23811")
    @NotNull(message = "生产计划不能为空")
    private Long planId;

    @Schema(description = "产品", requiredMode = Schema.RequiredMode.REQUIRED, example = "23811")
    private Long itemId;

    @Schema(description = "允收数量", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "允收数量不能为空")
    private BigDecimal acceptedQty;

    @Schema(description = "报废数量", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "报废数量不能为空")
    private BigDecimal scrapQty;

    @Schema(description = "破坏数量", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "破坏数量不能为空")
    private BigDecimal destroyedQty;

    @Schema(description = "批次号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "批次号不能为空")
    private String batchNo;

    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    private Integer status;

    @Schema(description = "请求信息")
    private String request;

    @Schema(description = "返回信息")
    private String response;

    @Schema(description = "响应信息")
    private String respCode;

    @Schema(description = "同步信息", example = "随便")
    private String description;

    @Schema(description = "备注", example = "你猜")
    private String remark;

}
